/*
 * @Author: wwssaabb
 * @Date: 2021-12-09 16:08:02
 * @LastEditTime: 2021-12-10 08:37:23
 * @FilePath: \handwritten-code\main\扁平化.js
 */

/* 
扁平化是指将多维数组变成一维数组
*/

let arr = [1, [2, [3]]]

//ES6 Array.prototype.flat()
let res1 = arr.flat(Infinity) //[1,2,3]

//JSON+正则处理(缺点JSON处理之后数字都变成了字符串，需类型转换处理)
let res2 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']').map(n => Number(n))
console.log(res2)

//ES5 递归+reduce
function flat(arr) {
  return arr.reduce((pre, cur) => pre.concat(Array.isArray(cur) ? flat(cur) : cur), [])
}
let res3 = flat(arr)
console.log(res3)